<?php
	session_start();
	include_once('const.php');//Подключаем файл констант

	//Функция фильтрования данных
	function filterData($data)
	{
		return mysql_real_escape_string(htmlspecialchars($data));
	}
	
	//Соединяемся с сервером MySQL и выбираем базу
	mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('Ошибка подключения к базе данных'); 
	mysql_select_db(DB_NAME);
	$correct = true;
	
	//Функционал добавления записи в базу
	if (!empty($_POST['keystring']))
		if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring'])
		{
			$uname = filterData($_POST['uname']);
			$email = filterData($_POST['email']);
			$hpage = filterData($_POST['homepage']);
			$text = filterData($_POST['text']);
			if (!empty($uname) and !empty($email) and !empty($text))
			{				
				$SQLq = "INSERT INTO msgs(uname, email, hpage, ip, browser, text) VALUES('".$uname."','".$email."','".$hpage."','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['HTTP_USER_AGENT']."','".$text."')";
				mysql_query($SQLq)or die('Ошибка запроса базы данных!');
				header('Location: index.php');
			}
			else $error = "Ошибка ввода, пожалуйста, заполните обязательные поля!";
		}
		else $error = "Ошибка ввода надписи с картинки, повторите ввод!</br>";//Переменная для передачи сообщения о неудачном записи
		
	elseif (isset($_POST['keystring']))
		$error = "Поле для ввода текста с картинки обязательное к заполнению!";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<link rel="stylesheet" href="style.css" type="text/css" />
		<title>Гостевая книга</title>
	</head>
	<body>
		<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method='post'>
			<h1>Гостевая книга</h1>
			<p class="error_text"><?php if (isset($error)) echo $error;?></p>
			<p class="uname">Ваше имя (обязательное поле):</p>
			<p><input type='text' name='uname' /></p>
			<p class="email">Ваш e-mail (обязательное поле):</p>
			<p><input type='text' name='email' /></p>
			<p>Домашняя страница:</p>
			<p><input type='text' name='homepage' /></p>
			<p class="pictext">Введите текст на картинке: (обязательное поле)</p>
			<p><img src="./captcha?<?php echo session_name()?>=<?php echo session_id()?>" alt="Включите картинки!"/></p>
			<p><input type="text" name="keystring" /></p>
			<p class="msg">Введите сообщение: (обязательное поле)</p>
			<p><textarea name='text' cols="50" rows="10"></textarea></p>
			<p><input type="submit" value="Отправить" /></p>
		</form>
		
		<?php
			
			if (isset($_GET['page']))//Проверяем наличие номера просматриваемой страницы
				$str = $_GET['page'];
			else 
				$str = 1;
			$a = ($str - 1) * CNT_PAGES+1;
			$b = $str * CNT_PAGES;
			if (isset($_GET['sort']))//Проверяем наличие поля для сортировки
				$sort = $_GET['sort'];
			else 
				$sort = 'pdate';
			if (isset($_GET['order']))//Проверяем наличие направления сортировки
				$order = $_GET['order'];
			else 
				$order = 0;
			if ($order)
				$setorder='';
			else $setorder='DESC';
			
			$SQLq = "SELECT id FROM msgs";//Запрос для определения количества записей таблицы
			$result = mysql_query($SQLq) or die('Ошибка');
			$num_rows = mysql_num_rows($result);//Суммарное количество записей в таблице
			$SQLq = "SELECT uname, email, hpage, ip, browser, DATE_FORMAT(pdate,'%Y-%m-%d %H:%i:%s') pdate, text FROM (SELECT @i := @i + 1 AS row_number, id, uname, email, hpage, ip, browser, pdate, text FROM msgs, (SELECT @i := 0) AS z ORDER BY $sort $setorder) AS y WHERE row_number BETWEEN $a AND $b";//Запрос для выбора записей заданного количества CNT_PAGES
			filterData($SQLq, 'mysql');//Фильтруем данные для SQL-запроса
			$result = mysql_query($SQLq) or die('Ошибка запроса базы данных');
			mysql_close();
			
			//Отрисовываем строку для перехода по страницам
			echo "<p id='nav'>Навигация по страницам: ";
			//Определяем количество страницы для отображения записей
			if (!($num_rows % CNT_PAGES))
				$last = $num_rows / CNT_PAGES;
			else $last = floor($num_rows/CNT_PAGES)+1;
			for ($i = 1; $i <= $last; $i++)
			{
				if ($str == $i)
					echo " $i \n";
				else 
					echo " <a href=\"index.php?page=$i\">$i</a>	\n";
			}
			echo "</p>";
			
				
			
			//Отрисовываем таблицу
			echo "<table>\n";
			
			$row = mysql_fetch_assoc($result);
			echo "<tr>\n";
			$harray = array('uname' => 'Имя', 
							'email' => 'e-mail', 
							'hpage' => 'Домашняя страница', 
							'ip' => 'ip-адрес', 
							'browser' => 'Используемый браузер', 
							'pdate' => 'Дата сообщения', 
							'text' => 'Сообщение');
			foreach ($row as $k =>$v)//Отрисовываем "голову" таблицы
				if ($k =='uname' or $k =='email' or $k =='pdate')
					{
						echo "<th><a href = \"index.php?sort=$k&amp;order=".!$order."&amp;page=$str\">$harray[$k]</a></th>\n\t";
					}
				else echo "<th>$harray[$k]</th>\n\t";
			echo "</tr>\n";
			while ($row)
			{
				echo "<tr>\n";
				foreach ($row as $k =>$v)
				{
					if ($k == 'pdate')
						echo "<td>",  $v, "</td>\n\t";//Выводим дату из базы данных
					else echo "<td>", nl2br($v), "</td>\n\t";//Используем функцию nl2br() для сохранения форматирования
				}
				echo "</tr>\n";
				$row = mysql_fetch_assoc($result);
			};
			echo "</table>\n";
		?>
		
	
	</body>
</html>